#ifndef CNTR_PHOTO
#define CNTR_PHOTO

#include <string>
#include <stdexcept>
#include <iostream>
#include <cstdlib>
#include <sstream>
#include <exception>
#include "../../domain.h"
#include "../../interface.h"
#include "../../controller.h"
#include "../../persistence.h"
#include "photo.h"
#include "InterfacePhoto.h"
#include "cmd_photo.h"


using namespace std;

/** Classe modelo de controladora para a Foto.
    IMPLEMENTA AS REGRAS DE NEGOCIO E SOLICITA SERVICOS PARA AS CONTROLADORAS DE INTERFACE E PERSISTENCIA.
*/
class ControllerPhoto : public Controller {
        int MIN_OPT;
        int MAX_OPT;
        int MAX_PHOTOSALBUM;
        int MAX_TOLERANCE;
        InterfacePhoto * interface;
        cmd_photo * cmd;
    /*TODO:InterfacePhoto Sera Criado para ter as funcoes de receber as variaveis de foto*/
    public:
        ControllerPhoto(InterfacePhoto*,cmd_photo *);
        int execute();
        int cadastrar();
        int excluir();
        int pesquisar();
        int addPhotoAlbum();
};
/**   IMPLEMENTA AS REGRAS DE NEGOCIO E SOLICITA SERVICOS PARA AS CONTROLADORAS DE INTERFACE E PERSISTENCIA.
*/
class ControllerAlbum : public Controller {
        int MIN_OPT;
        int MAX_OPT;
        int MAX_USERALBUNS;
        float MAX_PRICE;
        int MAX_TOLERANCE;
        InterfaceAlbum * interface;
        cmd_album * cmd;
    /*TODO:InterfacePhoto Sera Criado para ter as funcoes de receber as variaveis de foto*/
    public:
        ControllerAlbum(InterfaceAlbum*,cmd_album *);
        int execute();
        int cadastrar();
        int excluir();
        int pesquisar();
        int pesqPhotosAlbum();
};
#endif // CONTROLLER
